package com.ssd.sync;


import com.ssd.sync.modle.SyncMessage;

import java.util.List;

/**
 * 用于重写数据同步的具体逻辑：（需要依赖的模块实现里面的处理方法）
 * 同步处理处理器接口，用于处理从Redis队列中获取的数据
 * 该接口定义了两种处理数据的方法：批量处理和单一处理
 *
 * @param <T> 泛型参数，表示同步消息中携带的数据类型
 */
public interface SyncProcessHandler<T> {

    /**
     * 批量处理同步队列中的数据
     * 该方法用于同时处理多条从Redis队列中获取的消息，适用于需要批量操作的场景
     *
     * @param multiData 包含多条同步消息的列表，每条消息封装了需要处理的数据
     */
    void batchProcess(List<SyncMessage<T>> multiData);

    /**
     * 单一处理数据
     * 该方法用于处理单条从Redis队列中获取的消息，适用于需要单独处理每条消息的场景
     *
     * @param singleData 单条同步消息，封装了需要处理的数据
     */
    void singleProcess(SyncMessage<T> singleData);
}

